package jmine.tec.purge;

import jmine.tec.purge.domain.PurgeConfig;
import bancosys.tec.persist.controller.TransactionalController;

/**
 * @author Marcio Ribeiro (mmr)
 * @created Aug 15, 2011
 */
public class PurgeController extends TransactionalController {

    private PurgeExecutor purgeExecutor;

    /**
     * Executa expurgo para configuracao de forma sincrona.
     * 
     * @param cfg configuracao de expurgo.
     */
    public void purgeSync(PurgeConfig cfg) {
        this.purgeExecutor.purgeSync(cfg);
    }

    /**
     * Executa expurgo para a configuracao passada de forma assincrona.
     * 
     * @param cfg configuracao de expurgo.
     */
    public void purge(PurgeConfig cfg) {
        this.purgeExecutor.purge(cfg);
    }

    /**
     * @param cfg configuração de expurgo.
     * @return número de itens que seriam expurgados se expurgo fosse acionado nesse momento.
     */
    public int countItemsToPurge(PurgeConfig cfg) {
        return this.purgeExecutor.countItemsToPurge(cfg);
    }

    /**
     * Habilita configuracao de expurgo.
     * 
     * @param cfg configuracao de expurgo a habilitar.
     */
    public void enable(PurgeConfig cfg) {
        cfg.enable();
    }

    /**
     * Desabilita configuracao de expurgo.
     * 
     * @param cfg configuracao de expurgo a desabilitar.
     */
    public void disable(PurgeConfig cfg) {
        cfg.disable();
    }

    /**
     * Define valor para campo executor.
     * 
     * @param purgeExecutor valor para campo executor.
     */
    public void setPurgeExecutor(PurgeExecutor purgeExecutor) {
        this.purgeExecutor = purgeExecutor;
    }
}
